2023/12/231103字符
在有序的数组里找出指定的值,返回该值在数组中的索引
var arr = [1, 3, 5, 7, 9, 10, 12, 14];
function getIndex (arr, val) {
for (var i = 0; i < arr.length; i++) {
if(arr[i] == val) {
return i;
}
}
return -1;
}
getIndex(arr, 5); //--> 2
getIndex(arr, 15); //--> -1
二分查找法
// [1, 3, 5, 7, 9, 10, 12, 14]
// start=0 midden=parseInt((start+end)/2) end=arr.length-1
// start end=midden
// start=midden end
function lookup (arr, val) {
var start = 0;
var end = arr.length - 1;
while (start <= end) {
var midden = parseInt((start + end) / 2);
if(val == arr[midden]) {
return midden;
}else if (val < arr[midden]) { // 在左边
end = midden - 1;
}else if (val > arr[midden]) { // 在右边
start = midden + 1;
}
}
return -1;
}
console.log(lookup(arr, 3)); //--> 1